﻿using DAL.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DAL.Persistencia
{
    public class F_ContaDAL
    {

        private NewTierraEntities Con;

        public F_ContaDAL()
        {
            Con = new NewTierraEntities();
        }



        public void inserir(F_Conta fc)
        {
            try
            {
                Con.AddToF_Conta(fc);
                Con.SaveChanges();
            }
            catch
            {                
                throw;
            }

        }



        public void alterar(F_Conta nova)
        {
            try
            {

                F_Conta antiga = pesquisarPorNumeroConta(Convert.ToString(nova.Numero));

                antiga.id_Agencia = nova.id_Agencia;
                antiga.id_Moeda = nova.id_Moeda;
                antiga.Nome = nova.Nome;
                antiga.Numero = nova.Numero;
                antiga.saldo = nova.saldo;

                Con.SaveChanges();

            }
            catch (Exception)
            {
                
                throw;
            }


        }

        public List<F_Conta> ListarTodos()
        {
            try
            {
                return Con.F_Conta.ToList();
            }
            catch
            {
                throw;
            }
        }


        public List<F_Conta> ListarTodos(string nome)
        {
            try
            {
                return Con.F_Conta.Where(t => t.Nome.Contains(nome)).ToList();
            }
            catch
            {
                throw;
            }
        }


        public List<F_Conta> consultarTodos(int idAgenda)
        {

            try
            {
                return Con.F_Conta.Where(c => c.id_Agencia == idAgenda).OrderBy(C => C.Numero).ToList();
            }
            catch
            {
                throw;
            }

        }



        public List<F_Conta> consultarTodos(int idAgenda, string numero)
        {

            try
            {
                return Con.F_Conta.Where(c => c.id_Agencia == idAgenda && c.Numero.Contains(numero)).OrderBy(C => C.Numero).ToList();
            }
            catch
            {
                throw;
            }

        }

        public F_Conta pesquisarPorNumeroConta(string numeroConta)
        {
            try
            {
                return Con.F_Conta.Where(c => c.Numero.Equals(numeroConta)).SingleOrDefault();
            }
            catch 
            {                
                throw;
            }


        }


        public List<F_Conta> pesquisarPorNumeroContaFiltro(string numeroConta)
        {
            try
            {
                return Con.F_Conta.Where(c => c.Numero.Contains(numeroConta)).ToList();
            }
            catch
            {
                throw;
            }


        }

    }
}
